package cn.jbolt;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import com.alibaba.fastjson.JSONObject;
import com.jfinal.kit.HttpKit;
import com.jfinal.kit.PropKit;

import cn.jbolt.common.base.BaseRepMsg;
import cn.jbolt.common.base.BaseReqMsg;
import cn.jbolt.common.util.AESUtils;

public class ApiManager {
	//加密密钥，接口提供方提供给接口调用方使用。
	private final static String SECRET_KEY = PropKit.get("AES_CIPHER_CODE");
	
	public static void queryData(Integer type) {
		//封装请求参数
		BaseReqMsg reqMsg = new BaseReqMsg();
		reqMsg.put("type",type);
		//加密请求参数
		String q = AESUtils.encrypt(JSONObject.toJSONString(reqMsg),SECRET_KEY);
		//UTF-8编码，从后台请求接口必须经过编码，前端请求不需要编码是因为浏览器已经自动处理过了
        String sendstr = "";
		try {
			sendstr = URLEncoder.encode(q, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
        //将密文以参数q发送请求
        String param = "q=" + sendstr;
        //result即为接口返回的具体加密业务数据
        String result = HttpKit.post("http://localhost/queryData", param);
        System.out.println("====返回的密文=======");
        System.out.println(result);
        System.out.println("====解析为明文json====");
        //明文json字符串
        String json = AESUtils.decrypt(result,SECRET_KEY);
        //可以直接转化为对应消息体，方便进行业务处理
        BaseRepMsg repMsg = JSONObject.parseObject(json, BaseRepMsg.class);
        System.out.println(repMsg.toJSONString());
        
        
        
		
	}

}
